/*
* ECARX Technology Limited is the owner of the copyright and the trade secret of this software.
* Without permission, no one has the right to obtain, disclose or use this software in any way.
*/

package ecarx.xsf.notificationcenter.sdk;


import android.app.PendingIntent;

import java.util.List;


public abstract class AbstractBaseNotification {

    /**
     * 通知id
     *
     * @return id
     */
    public abstract int getId();

    /**
     * 发起方包名
     *
     * @return 包名
     */
    public abstract String getPackageName();

    /**
     * @return @Style 样式，支持智能提示，霸屏通知，智能卡片，landing page
     *
     */
    @IEASLauncherControllerAPI.Style
    public abstract int getStyle();


    /**
     * 通知标题
     *
     * @return 标题
     */
    public abstract String getTitle();

    /**
     * 通知副标题
     *
     * @return 副标题
     */
    public abstract String getContent();

    /**
     * 消息显示icon
     * @return icon 地址
     */
    public abstract String getIcon();

    /**
     * 内容区点击事件
     *
     * @return 内容点击区事件
     */
    public abstract PendingIntent getContentIntent();

    /**
     * 删除事件，对应于原生通知中心的delete intent
     *
     */
    public abstract PendingIntent getDeleteIntent();

    /**
     * 触达层显示子样式，比如气泡轻提醒，卡片重提醒
     */
    @IEASLauncherControllerAPI.SubStyle
    public abstract String getSubStyle();

    /**
     * 是否霸屏显示，只适用于霸屏通知
     *
     * @return 默认false
     */
    public abstract boolean isTyrant();

    /**
     * 是否 tts 播报
     *
     * @return tts
     */
    public abstract boolean isTtsOn();

    /**
     *
     * @return 是否开启可见即可说
     */
    public abstract boolean seeSay();

    /**
     * 是否播放提示音
     *
     * @return 提示音是否打开
     */
    public abstract boolean isBeep();

    /**
     *
     * @return landing page内容的url地址，一般是H5页面地址
     */
    public abstract String getUrl();

    /**
     * 按钮点击事件,智能提示按钮点击事件
     *
     * @return actions
     */
    public abstract List<AbstractStatusBarAction> getActions();

    /**
     *
     * @return 可见即可说触发事件
     */
    public abstract List<AbstractStatusBarAction> getSeeSayEventActions();


    /**
     * 智能卡片按钮点击事件
     * @return AbstractStatusBarAction
     */
    public abstract List<AbstractStatusBarAction> getSmartCardActions();

    /**
     * 通知标识符
     * @return 标识符
     */
    public abstract String getTag();

    /**
     * 发送时间
     *
     * @return 发送时间
     */
    public abstract long getWhen();

}
